package com.yc.txx.util;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.yc.txx.service.BizException;

import java.util.Collection;
import java.util.Collections;
import java.util.Map;

/**
 * Company 源辰信息
 *
 * @author navy
 * @date 2024/4/27
 * Email haijunzhou@hnit.edu.cn
 */
public class Utils {

    public static void check(boolean bool, String msg) throws BizException {
        if(bool){
            throw new BizException(msg);
        }
    }

    public static void check(boolean bool,String msg,Object data) throws BizException{
        if (bool){
            throw new BizException(msg,data);
        }
    }

    public static boolean isEmpty(Object object){
        if(object == null){
            return true;
        } else if(object instanceof String){
            return object.toString().trim().isEmpty();
        } else if(object instanceof Collection){
            return ((Collection)object).isEmpty();
        } else if(object instanceof Map){
            return ((Map)object).isEmpty();
        } else {
            return false;
        }
    }

    public static void generate(){
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/txx?serverTimezone=GMT%2b8", "root", "315685min")
                .globalConfig(builder -> {
                    builder.author("xl") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
                            .fileOverride() // 覆盖已生成文件
                            .outputDir("D:\\yc三期项目\\新教学视频\\5.7"); // 指定输出目录
                })
//                .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
//                    int typeCode = metaInfo.getJdbcType().TYPE_CODE;
//                    if (typeCode == Types.SMALLINT) {
//                        // 自定义类型转换
//                        return DbColumnType.INTEGER;
//                    }
//                    return typeRegistry.getColumnType(metaInfo);
//
//                }))
                .packageConfig(builder -> {
                    builder.parent("com.yc") // 设置父包名
                            .moduleName("txx") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\yc三期项目\\新教学视频\\5.7")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    //builder.addInclude("t_simple") // 设置需要生成的表名
                    builder.addTablePrefix("txx_"); // 设置过滤表前缀
                })
                //.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }

    public static void main(String[] args) {
        generate();
    }

}
